﻿using System.Linq.Expressions;
using Shop.Model.DB;
using Shop.Model.FrontCategory;
using Shop.RemoteModel.FrontCategory.Model;

namespace Shop.Collect
{
    public interface IFrontCategoryCollect
    {
        long Add (FrontCategoryAdd add);
        void Delete (DBFrontCategory category, long[] subId);
        void Enable (DBFrontCategory category);
        DBFrontCategory Get (long id);
        Result Get<Result> (long id) where Result : class;
        FrontCategoryData[] GetAll ();
        long[] GetSubId (DBFrontCategory category);
        void Move (DBFrontCategory source, DBFrontCategory to);
        bool Set (DBFrontCategory source, FrontCategorySet set);
        Dictionary<long, int> SetSort (DBFrontCategory category, int sort);
        void Stop (DBFrontCategory category);
        Result[] Gets<Result> (FrontCategoryGet param) where Result : class, new();
        Result Get<Result> (long id, Expression<Func<DBFrontCategory, Result>> select);
        string[] GetFullName (long frontId);
    }
}